import { createPinia } from 'pinia'
import type { App } from 'vue'
import useLoginStore from './login'
import { localCache } from '@/utils/cache'
import { LOGIN_TOKEN, CACHE_USERINFO, CACHE_USERMENUS } from '@/global/constant'

const store = createPinia()

// 不能使用router，因为此时router还么加载vue中
function registerStore(app: App<Element>) {
  // 1.use的pinia
  app.use(store)
  // 2. 加载本地数据
  const loginStore = useLoginStore()
  const userMenus = localCache.getCache(CACHE_USERMENUS)
  const userInfo = localCache.getCache(CACHE_USERINFO)
  // 3. 本地数据存在，再次获取用户数据 (防止用户重复刷新页面, 导致路由没有加载完全)
  if (userMenus?.length && userMenus.length > 0 && userInfo && Object.keys(userInfo).length > 0) {
    loginStore.loadLocalCacheAction()
  } else {
    // 如果本地将userMenus删除，清空所有数据，并重新登陆
    localCache.removeCache(LOGIN_TOKEN)
    localCache.removeCache(CACHE_USERINFO)
    localCache.removeCache(CACHE_USERMENUS)
    // router.push('/login')
    window.location.href = window.location.hash ? `${window.location.origin}/#/login` : `${window.location.origin}/login`
  }
}

export default registerStore
